package com.example.myapplication.adapter;

import android.content.Context;
import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.example.myapplication.R;

public class GridAdapter  extends BaseAdapter {
    //①重写BaseAdapter方法（4个）

    //创建对象接收，初始化数据
    private Context context;
    private int resource;
    private String[] names;
    private int[] icons;


    //②创建构造器
//    参数1:对应上下文 参数2：资源文件 参数3：图片资源 参数4：文本资源
    public GridAdapter(Context context, int resource,String []names,int[] icons){
        //接收数据
        this.context=context;
        this.resource = resource;
        this.names = names;
        this.icons = icons;
    }


    @Override
    //获取到网格项的数目
    public int getCount() {
        return names.length;//获取到定义好的数组的长度
    }

    @Override
    //获取到Item对应的位置信息，也就是我们所说的点击了那个Item
    public Object getItem(int position) {
        return names[position];
    }

    @Override
    //一般情况下位置和ItemId是相互对应的
    public long getItemId(int position) {
        return position;
    }


    @Override
    //获取到对应的view
    public View getView(int position, View convertView, ViewGroup parent) {
        //首先判断convertView是否为空  对应的点击了哪一个Item  或者是View组件

        ViewHolder holder;
        if(convertView ==null){
            //飞窗显示
            convertView = LayoutInflater.from(context).inflate(resource,parent,false);
            //实例化并且找到item中的对应组件
            holder = new ViewHolder();
            holder.imageView = convertView.findViewById(R.id.iv_grid_view);
            holder.textView = convertView.findViewById(R.id.iv_grid_name);
            convertView.setTag(holder);//获取到对应的图标

        }else{
            holder = (ViewHolder)convertView.getTag();//类型转换 强转
        }

        //为图片找到匹配对应的图标和文本文件
        holder.imageView.setImageResource(icons[position]);

        holder.textView.setText(names[position]);
        return convertView;


    }
    //定义一个ViewHolder类，主要用来内容的两个组件进行处理
   public  class  ViewHolder{
        ImageView imageView;
        TextView  textView;
    }
}
